package com.chen.Dome2reflect;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

public class ReflectDome3 {
    public static void main(String[] args) throws Exception {
        //目标：认识反射的基本作用
        //1.反射可以获取任意一个类的全部成员变量、构造器、方法
        //2.破坏封装性
        //3.可以绕过泛型的类型检查（约束）
        ArrayList<String> list = new ArrayList<>();
        list.add("hello");
        list.add("world");
        list.add("java");
        list.add("陈世玉");
//        list.add(10);
        Class c1=list.getClass();
        Method add1 = c1.getDeclaredMethod("add", Object.class);//获取add方法
        //触发list集合的add方法
        add1.setAccessible(true);//暴力反射
        add1.invoke(list,10);
        add1.invoke(list,true);
        System.out.println(list);

    }

}
